|
@@ -51,10 +51,10 @@
|
|
|
<div style="width: 160px;" onclick="openFile(event)">파일</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <input type="file" style="display: none;" id="folder-upload" name="folder" onchange="uploadFolders(event)" webkitdirectory multiple >
|
|
|
- <input type="file" style="display: none;" id="file-upload" name="file" onchange="uploadFiles(event)" multiple >
|
|
|
<div onclick="refreshDrive()">새로고침</div>
|
|
|
<div class="one-drive-button">OneDrive에서 열기</div>
|
|
|
+ <input type="file" style="display: none;" id="folder-upload" name="folder" onchange="uploadFolders(event)" webkitdirectory multiple >
|
|
|
+ <input type="file" style="display: none;" id="file-upload" name="file" onchange="uploadFiles(event)" multiple >
|
|
|
</div>
|
|
|
<div class="panel"></div>
|
|
|
<div class="file-title">
|
|
@@ -77,6 +77,13 @@
|
|
|
const groupMap = new Map();
|
|
|
let _selectedData = [];
|
|
|
let _listData = [];
|
|
|
+ $(document).ajaxStart(()=>{
|
|
|
+ $('body').append(`<div id="load">
|
|
|
+ <img src="/static/images/Settings.gif" alt="loading">
|
|
|
+ </div>`);
|
|
|
+ }).ajaxStop(()=>{
|
|
|
+ $('#load').remove();
|
|
|
+ });
|
|
|
$(()=>{
|
|
|
microsoftTeams.appInitialization.notifySuccess();
|
|
|
getGroupList();
|
|
@@ -87,6 +94,7 @@
|
|
|
window.addEventListener('click', function() {
|
|
|
$('.click-menu').css('display', 'none');
|
|
|
})
|
|
|
+
|
|
|
|
|
|
});
|
|
|
function openFolder(event) {
|
|
@@ -151,9 +159,9 @@
|
|
|
_formData.append('siteId', siteId);
|
|
|
_formData.append('path', sitePath);
|
|
|
// _formData.getAll()
|
|
|
- $('body').append(`<div id="load">
|
|
|
- <img src="/static/images/Settings.gif" alt="loading">
|
|
|
- </div>`);
|
|
|
+ // $('body').append(`<div id="load">
|
|
|
+ // <img src="/static/images/Settings.gif" alt="loading">
|
|
|
+ // </div>`);
|
|
|
|
|
|
$.ajax({
|
|
|
method: 'post',
|
|
@@ -162,7 +170,7 @@
|
|
|
data : _formData,
|
|
|
url : '/uploadItems',
|
|
|
success: (res) => {
|
|
|
- $('#load').remove();
|
|
|
+ // $('#load').remove();
|
|
|
let str = res.message;
|
|
|
|
|
|
if (res.error) {
|
|
@@ -176,7 +184,7 @@
|
|
|
|
|
|
},
|
|
|
error: (error) => {
|
|
|
- $('#load').remove();
|
|
|
+ // $('#load').remove();
|
|
|
alertMessage(alertTitle, error, null);
|
|
|
// console.log('==============error=============\n');
|
|
|
// console.log(error);
|
|
@@ -226,7 +234,7 @@
|
|
|
jsonData.value.forEach((obj, idx)=>{
|
|
|
dragAndDrop();
|
|
|
let images = "/static/images/";
|
|
|
-
|
|
|
+ let imageName = "";
|
|
|
|
|
|
let modifyName = "";
|
|
|
if (obj.lastModifiedBy && obj.lastModifiedBy.user) {
|
|
@@ -234,8 +242,10 @@
|
|
|
}
|
|
|
if (obj.folder || obj.driveType) {
|
|
|
images += "folder.png";
|
|
|
+ imageName = "폴더 이미지";
|
|
|
}
|
|
|
else if (obj.file && obj.name) {
|
|
|
+ imageName = "파일 이미지";
|
|
|
let ext = obj.name.substring(obj.name.lastIndexOf('.') + 1);
|
|
|
let imageExt = ".svg";
|
|
|
//photo
|
|
@@ -318,8 +328,8 @@
|
|
|
str += `
|
|
|
<div id="row_${idx}">
|
|
|
<div>
|
|
|
- <input type="checkbox" name="row_${idx}" value="${obj.id}" onclick="event.stopPropagation()">
|
|
|
- <img src="${images}" width="32" height="32" alt="폴더 이미지">
|
|
|
+ <input type="checkbox" name="row_${idx}" value="${obj.id}" onchange="checkState(event)" onclick="event.stopPropagation()">
|
|
|
+ <img src="${images}" width="32" height="32" alt="${imageName}">
|
|
|
</div>
|
|
|
<div class="file_name"><span class="sp-name" onclick="${method}">${obj.name}</span></div>
|
|
|
<div>${amount}</div>
|
|
@@ -359,16 +369,35 @@
|
|
|
}
|
|
|
|
|
|
const {clientX, clientY} = e;
|
|
|
- const toggleBox = $(`<div class="toggle-box" style="position:absolute; top:${clientY}; left: ${clientX}">
|
|
|
- <div>편집</div>
|
|
|
- <div>탭으로 설정</div>
|
|
|
- <div>다운로드</div>
|
|
|
- <div onclick="deleteItem()">삭제</div>
|
|
|
- <div>이동</div>
|
|
|
- <div>복사</div>
|
|
|
- <div onclick="nameChange()">이름 바꾸기</div>
|
|
|
- </div>`);
|
|
|
- $('body').append(toggleBox);
|
|
|
+ const array = $('.file-content input[type="checkbox"]');
|
|
|
+ let str = `<div>편집</div>
|
|
|
+ <div>탭으로 설정</div>
|
|
|
+ <div onclick="download()">다운로드</div>
|
|
|
+ <div onclick="deleteItem()">삭제</div>
|
|
|
+ <div>이동</div>
|
|
|
+ <div>복사</div>
|
|
|
+ <div onclick="nameChange()">이름 바꾸기</div>`;
|
|
|
+ if (array && array.length > 0) {
|
|
|
+ let checkCnt = 0;
|
|
|
+ for (let ii = 0; ii < array.length; ii++) {
|
|
|
+ if(array.eq(ii).is(':checked')) {
|
|
|
+ checkCnt++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (checkCnt > 1) {
|
|
|
+ str = `<div>편집</div>
|
|
|
+ <div>탭으로 설정</div>
|
|
|
+ <div onclick="download()">다운로드</div>
|
|
|
+ <div onclick="deleteItem()">삭제</div>
|
|
|
+ <div>이동</div>
|
|
|
+ <div>복사</div>`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const toggleBox = $(`<div class="toggle-box" style="position:absolute; top:${clientY}; left: ${clientX}">
|
|
|
+ ${str}
|
|
|
+ </div>`);
|
|
|
+ $('body').append(toggleBox);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -407,6 +436,16 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ function checkState(event){
|
|
|
+ const $target = $(event.target);
|
|
|
+ const $row = $('#'+$target.attr('name'));
|
|
|
+ let method = 'removeClass';
|
|
|
+ if ($target.is(':checked')) {
|
|
|
+ method = 'addClass';
|
|
|
+ }
|
|
|
+ $row[method]('on');
|
|
|
+ }
|
|
|
+
|
|
|
//삭제 이벤트
|
|
|
function deleteItem() {
|
|
|
const checkArr = $('.file-content input[type="checkbox"]');
|
|
@@ -462,6 +501,70 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ function getDrivePath() {
|
|
|
+ console.log($('.panel-item'));
|
|
|
+ let path = '/drive/root';
|
|
|
+ if ($('.panel-item').length > 1) {
|
|
|
+ path += ':';
|
|
|
+ for (let ii = 1; ii < $('.panel-item').length; ii++) {
|
|
|
+ path += '/' + $('.panel-item').eq(ii).text();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return path;
|
|
|
+ }
|
|
|
+
|
|
|
+ //다운로드 이벤트
|
|
|
+ function download(){
|
|
|
+ const fileArr = $('.file-content input[type="checkbox"]');
|
|
|
+ if (fileArr || fileArr.length) {
|
|
|
+ const fileIdArr = [];
|
|
|
+ for (let ii = 0; ii < fileArr.length; ii++) {
|
|
|
+ const isChecked = fileArr.eq(ii).is(':checked');
|
|
|
+ if (isChecked) {
|
|
|
+ fileIdArr.push(fileArr.eq(ii).val());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (fileIdArr.length === 0) return alertMessage('다운로드', '다운로드 할 파일을 선택해주세요.');
|
|
|
+
|
|
|
+ $.ajax({
|
|
|
+ method: 'post',
|
|
|
+ url : '/api/download',
|
|
|
+ data : {
|
|
|
+ siteId : getSitesId(),
|
|
|
+ path : getDrivePath(),
|
|
|
+ fileIds : JSON.stringify(fileIdArr),
|
|
|
+ zipName : $('.panel-item.on').text().trim(),
|
|
|
+ },
|
|
|
+ success: (res)=>{
|
|
|
+ if (res.success === 'S') {
|
|
|
+ const dataUrl = window.URL.createObjectURL(new Blob([new Uint8Array(res.data.data).buffer]));
|
|
|
+ const link = document.createElement('a');
|
|
|
+ link.href = dataUrl;
|
|
|
+ link.download = res.name;
|
|
|
+ link.style.display = 'none';
|
|
|
+ $('body').append(link);
|
|
|
+ link.click();
|
|
|
+ link.remove();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ let message = res.message;
|
|
|
+ if (res.error) {
|
|
|
+ console.log(res.error);
|
|
|
+ message += '<br>' + res.error;
|
|
|
+ }
|
|
|
+ alertMessage('다운로드',message);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error : (error) => {
|
|
|
+ console.log(error);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
function drawPath(path, siteId, name) {
|
|
|
let imgSrc = '';
|
|
|
let panelStr = '';
|
|
@@ -509,10 +612,10 @@
|
|
|
return panelStr;
|
|
|
}
|
|
|
|
|
|
- function nameChange() {
|
|
|
- if ($('.file-content > .on .file_name')[0]) {
|
|
|
- }
|
|
|
- }
|
|
|
+ // function nameChange() {
|
|
|
+ // if ($('.file-content > .on .file_name')[0]) {
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
|
|
|
function dragAndDrop() {
|
|
@@ -574,10 +677,9 @@
|
|
|
|
|
|
_formData.append('siteId', siteId);
|
|
|
_formData.append('path', sitePath);
|
|
|
- // _formData.getAll()
|
|
|
- $('body').append(`<div id="load">
|
|
|
- <img src="/static/images/Settings.gif" alt="loading">
|
|
|
- </div>`)
|
|
|
+ // $('body').append(`<div id="load">
|
|
|
+ // <img src="/static/images/Settings.gif" alt="loading">
|
|
|
+ // </div>`)
|
|
|
$.ajax({
|
|
|
method: 'post',
|
|
|
processData : false,
|
|
@@ -585,7 +687,7 @@
|
|
|
data : _formData,
|
|
|
url : '/uploadItems',
|
|
|
success: (res) => {
|
|
|
- $('#load').remove();
|
|
|
+ // $('#load').remove();
|
|
|
let str = res.message;
|
|
|
if (res.error) {
|
|
|
str += '<br>오류 : ' + res.error;
|
|
@@ -599,7 +701,7 @@
|
|
|
|
|
|
},
|
|
|
error: (error) => {
|
|
|
- $('#load').remove();
|
|
|
+ // $('#load').remove();
|
|
|
alertMessage(alertTitle, error, null);
|
|
|
// console.log('==============error=============\n');
|
|
|
// console.log(error);
|
|
@@ -827,6 +929,11 @@
|
|
|
const $fileContent = $('.file-content');
|
|
|
const $panel = $('.panel');
|
|
|
$oneDriveBtn.off('click');
|
|
|
+ let text = name;
|
|
|
+ if (name !== 'One Drive') {
|
|
|
+ text = 'SharePoint'
|
|
|
+ }
|
|
|
+ $oneDriveBtn.text(text+'에서 열기');
|
|
|
if (jsonData.webUrl){
|
|
|
$oneDriveBtn.on('click', ()=>{
|
|
|
window.open(jsonData.webUrl);
|
|
@@ -928,7 +1035,6 @@
|
|
|
joinedTeams.teams.forEach((team)=>{
|
|
|
const items = joinedTeams.items[team.id];
|
|
|
let siteId = team.sharePoint.siteId;
|
|
|
- // onclick="siteDriveChildrenItems('${siteId}', '/drive/root', '${team.displayName}', '${siteId}', event)"
|
|
|
str += `<li id="${siteId}_li">
|
|
|
<input type="checkbox" checked="false" id="${siteId}_check" value="${siteId}">
|
|
|
<label for="${siteId}_check"><img width="24" height="24" src="${team.sharePoint.siteUrl}${groupImageUrl}" alt="이미지"> ${team.displayName}</label>
|
|
@@ -947,10 +1053,6 @@
|
|
|
const {teams, items} = oneDrive;
|
|
|
const sharePoint = teams.sharePoint;
|
|
|
siteId = sharePoint.siteId;
|
|
|
- // str += `<div>
|
|
|
- // <input type="checkbox" checked="false" id="${siteId}" value="${siteId}" onclick="siteDriveChildrenItems('${siteId}', '/drive/root', 'One Drive', '${siteId}', event)">
|
|
|
- // <label for="${siteId}"><img width="24" height="24" src="${sharePoint.siteUrl}${groupImageUrl}" alt="그룹 이미지"> One Drive</label>
|
|
|
- // </div>`;
|
|
|
str += `<div id="${siteId}_li" onclick="siteDriveChildrenItems('${siteId}', '/drive/root', 'One Drive', '${siteId}', event)">
|
|
|
<img width="24" height="24" src="${sharePoint.siteUrl}${groupImageUrl}" alt="그룹 이미지"> One Drive
|
|
|
</div>`;
|
|
@@ -962,20 +1064,10 @@
|
|
|
teams = [teams];
|
|
|
}
|
|
|
for (let team of teams) {
|
|
|
- // const items = sites.items[team.id];
|
|
|
let siteId = team.sharePoint.siteId;
|
|
|
let path;
|
|
|
let imageUrl;
|
|
|
- // str += `<li>
|
|
|
- // <input type="checkbox" checked="false" id="${siteId}" value="${siteId}" onclick="siteDriveChildrenItems('${siteId}', '/drive/root', '${team.displayName}', '${siteId}', event)">
|
|
|
- // <label for="${siteId}"><img width="24" height="24" src="${team.sharePoint.siteUrl}${groupImageUrl}" alt="이미지"> ${team.displayName}</label>
|
|
|
- // <ul>`;
|
|
|
- // if (items && items.length > 0) {
|
|
|
- // items.forEach((item)=>{
|
|
|
- // str +=`<li id="${item.id}" onclick="siteDriveChildrenItems('${siteId}', '/drive/root:/${item.name}', '${team.displayName}', null, event)">${item.name}</li>`
|
|
|
- // })
|
|
|
- // }
|
|
|
- // str +=`</ul></li>`;
|
|
|
+ console.log(team.displayName);
|
|
|
str += `
|
|
|
<div id="${siteId}_li" onclick="siteDriveChildrenItems('${siteId}', '/drive/root', '${team.displayName}', '${siteId}', event)">
|
|
|
<img width="24" height="24" src="${team.sharePoint.siteUrl}${groupImageUrl}" alt="그룹 이미지"> ${team.displayName}
|
|
@@ -1010,13 +1102,6 @@
|
|
|
_selectedData.value.sort(function (a, b){
|
|
|
return a[type] > b[type] ? first : a[type] === b[type] ? 0 : end;
|
|
|
});
|
|
|
-
|
|
|
- if ($('.panel').children().first().text() === 'One Drive') {
|
|
|
- drawOneDrive(_selectedData);
|
|
|
- }
|
|
|
- else {
|
|
|
-
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
$('.tree.group input[type="checkbox"]').on('change', function(event){
|
|
@@ -1127,26 +1212,47 @@
|
|
|
return siteId;
|
|
|
}
|
|
|
|
|
|
- function changeNames() {
|
|
|
+ function nameChange() {
|
|
|
+ const $checkbox = $('.file-content > div.on input[type="checkbox"]');
|
|
|
+ if ($checkbox.length > 1) return;
|
|
|
+ if (!$('.file-content > div.on .file_name')[0]) return;
|
|
|
+ const siteId = getSitesId();
|
|
|
+ const itemId = $checkbox.val();
|
|
|
+ const name = $('.file-content > div.on .file_name').text();
|
|
|
+ let ext = "";
|
|
|
+ let inputVal = name;
|
|
|
+ let width = '100%';
|
|
|
+ if(name.includes(".")) {
|
|
|
+ inputVal = name.substring(0, name.lastIndexOf("."));
|
|
|
+ ext = name.substring(name.lastIndexOf("."));
|
|
|
+ width = 'calc(100% - 35px)';
|
|
|
+ }
|
|
|
+ callApi('get', "/sites/"+ siteId + "/drive/items/" + itemId, (jsonData)=>{
|
|
|
+ console.log(jsonData);
|
|
|
+ })
|
|
|
+
|
|
|
const modalContainer = $(
|
|
|
`<div class="modal" style="display: flex;">
|
|
|
<div class="modal-box">
|
|
|
<div class="header">
|
|
|
<div class="title">이름 바꾸기</div>
|
|
|
<div class="x-button">
|
|
|
- <span><img src="/static/images/x-button.png" width="15" height="15" alt="닫기 버튼"></span>
|
|
|
+ <span><img src="/static/images/x-button.png" width="15" height="15" alt="닫기 버튼" onclick="$('.modal').remove()"></span>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="modal-content">
|
|
|
<div>이름</div>
|
|
|
- <input type="text" name="file_name" id="" value="">
|
|
|
+ <div style="display:flex; align-items:flex-end;">
|
|
|
+ <input type="text" style="width:${width};" name="change_name" id="${itemId}" value="${inputVal}"> ${ext}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="button-box">
|
|
|
<div class="name-btn">이름 바꾸기</div>
|
|
|
- <div class="name-btn">취소</div>
|
|
|
+ <div class="cancel-btn" onclick="$('.modal').remove()">취소</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>`);
|
|
|
+ $('body').append(modalContainer);
|
|
|
}
|
|
|
|
|
|
</script>
|