pix-angular-filebrowser
Version:
File browser for Web2
1 lines • 7.03 kB
JavaScript
function FileBrowserController(e,n,o,t,i,l,c,r,a){function s(n){w=n,w.selection.on.rowSelectionChanged(e,d),w.selection.on.rowSelectionChangedBatch(e,d),w.core.on.sortChanged(e,u)}function d(){h.selection=w.selection.getSelectedRows()}function u(e,n){var o=[],i=[];_.each(n,function(e){o.push(function(n){return _.result(n,e.field)}),i.push("asc"===e.sort.direction)}),t.sort(o,i)}function f(e,n){if(0===h.selection.length)w.selection.selectRowByVisibleIndex(0);else{if(n&&h.selection.length>1&&0!==g&&g!=e){var o=h.selection[e>0?0:h.selection.length-1];return void w.selection.unSelectRow(o)}g=e;var i=h.selection[0>e?0:h.selection.length-1];n||_.each(h.selection,w.selection.unSelectRow);var l=_.findIndex(t.items,function(e){return e.id===i.id});l+=e,l=Math.min(Math.max(l,0),t.items.length-1);var c=t.items[l];w.selection.selectRow(c)}}function p(n){var o=n?[n]:h.selection,t=new i;t.initializeFromExistingData(o),e.emitBusEvent("PIX.VIEWER.OPEN",{items:t,current:t.collection[0],skipUnpackCurrent:!0})}function m(){var e=new i;e.initializeFromExistingData(h.selection),h.sendAttachments=e,h.sendVisible=!0}var w,h=this;h.selection=[];var g=0;h.isLoading=!0,h.gridOptions={enableSorting:!0,useExternalSorting:!0,enableRowSelection:!0,enableSelectionBatchEvent:!0,enableRowHeaderSelection:!1,multiSelect:!0,modifierKeysToMultiSelect:!0,columnDefs:[],rowTemplate:"pix.filebrowser.row.html",data:t.items,excessRows:50,onRegisterApi:s,enableHorizontalScrollbar:c.scrollbars.NEVER},o.all({name:n("FileBrowser.Column.Name"),description:n("FileBrowser.Column.Description"),createdOn:n("FileBrowser.Column.CreatedOn"),createdBy:n("FileBrowser.Column.CreatedBy"),modifiedOn:n("FileBrowser.Column.ModifiedOn"),modifiedBy:n("FileBrowser.Column.ModifiedBy")}).then(function(e){h.gridOptions.columnDefs=[{name:e.name,field:"viewData.fields.name",enableColumnMenu:!1,cellTemplate:"pix.filebrowser.name.html"},{name:e.description,field:"viewData.fields.description",enableColumnMenu:!1,cellClass:"text-muted"},{name:e.createdOn,field:"viewData.fields.created_on",enableColumnMenu:!1,cellTemplate:"pix.filebrowser.date.html",cellClass:"text-muted"},{name:e.createdBy,field:"viewData.createdBy.viewData.label",enableColumnMenu:!1,cellClass:"text-muted"},{displayName:e.modifiedOn,field:"viewData.fields.modified_on",enableColumnMenu:!1,cellTemplate:"pix.filebrowser.date.html",cellClass:"text-muted"},{displayName:e.modifiedBy,field:"viewData.modifiedBy.viewData.label",enableColumnMenu:!1,cellClass:"text-muted"}]}),a.bindTo(e).add({combo:"up",description:"Move up",callback:function(){f(-1,!1)}}).add({combo:"shift+up",description:"Move down",callback:function(){f(-1,!0)}}).add({combo:"down",description:"Move down",callback:function(){f(1,!1)}}).add({combo:"shift+down",description:"Move down",callback:function(){f(1,!0)}}).add({combo:"enter",description:"Open in viewer",callback:function(){p()}}).add({combo:"left",description:"collapse",callback:function(){_.each(h.selection,function(e){e.isContainer&&h.collapse(e)})}}).add({combo:"right",description:"collapse",callback:function(){_.each(h.selection,function(e){e.isContainer&&h.expand(e)})}}),h.expand=function(e,o){o&&o.stopImmediatePropagation(),e.$$loading=!0,t.expand(e).then(function(){e.$$expanded=!0},function(){l.flashWarnings(n("FileBrowser.Error.Expand",e)),e.$$expanded=!1})["finally"](function(){e.$$loading=!1})},h.collapse=function(e,n){n&&n.stopImmediatePropagation(),t.collapse(e),e.$$expanded=!1},h.openInViewer=p,h.share=m,e.onBusEvent("PIX.SHARE.CLOSE",function(){h.sendVisible=!1}),h.isLoading=!0,t.init().then(function(){function e(n){n.contentsCollectionModel&&n.$$expanded&&(t.expand(n),n.contentsCollectionModel.collection.forEach(function(n){e(n)}))}h.isLoading=!1,t.items.forEach(function(n){e(n)})}),Object.defineProperty(h,"canShare",{get:function(){return h.selection&&0!==h.selection.length?_.every(h.selection,function(e){return e.viewData.permissions.canSend&&!(e instanceof r)}):!1}})}FileBrowserController.$inject=["$scope","$translate","$q","FileBrowserService","ItemsCollectionModel","NotificationsService","uiGridConstants","PIXFolder","hotkeys"],angular.module("PIX.FileBrowser.Controller",["angularMoment","cfp.hotkeys"]).controller("FileBrowserController",FileBrowserController),function(){"use strict";angular.module("PIX.FileBrowser",["PIX.FileBrowser.Controller","PIX.FileBrowser.Templates","PIX.FileBrowser.Service","PIX.ItemTypes.PIXFolder","PIX.Items.CollectionModel","PIX.Accessibility.Loading","ui.grid","ui.grid.selection","angularMoment"])}(),function(){"use strict";function e(e,n,o,t,i,l,c,r,a,s){function d(e){C.length=0,u(e)}function u(e,n){n=n||0;var o=[n,0].concat(e);Array.prototype.splice.apply(C,o)}function f(e,n){n=n||0;var o=[n,e.length].concat(e);Array.prototype.splice.apply(C,o)}function p(e){return e.expand().then(function(){function n(){return e.contentsCollectionModel.cacheSettings.hasOutstandingRecords?(e.contentsCollectionModel.cacheSettings.pageSize=500,e.contentsCollectionModel.cache.getNextPage().then(o),!0):!1}function o(){var o=C.indexOf(e.contentsCollectionModel.collection[c-1])+1,i=_.map(e.contentsCollectionModel.collection.slice(c),function(e){return _.defaults(e,t)});c=e.contentsCollectionModel.collection.length,f(i,o),n()}var t={$$level:e.$$level+1||1,$$parentId:e.id},i=C.indexOf(e),c=0,r=_.clone(e.contentsCollectionModel.collection),a=_.map(Array(e.contentsCollectionModel.info.total),function(){return r.length>0?(c++,_.defaults(r.shift(),t)):_.defaults({id:_.uniqueId("tmpFile")},t,l)});u(a,i+1),n()})}function m(e){var n,o,t=e.$$level||0;n=o=C.indexOf(e)+1;for(var i=C[n];i&&i.$$level>t;)n++,i.$$expanded&&(i.$$expanded=!1),i=C[n];C.splice(o,n-o)}function w(e,n){var o=_.groupBy(C,function(e){return e.$$parentId||"root"}),t=_.sortByOrder(o.root,e,n);delete o.root;for(var i in o){var l=o[i];l=_.sortByOrder(l,e,n);var c=_.findIndex(t,function(e){return e.id===i}),r=[c+1,0].concat(l);Array.prototype.splice.apply(t,r)}d(t)}function h(){return n(function(n,t){b?n():(s.whenProjectOrSessionEnded.then(g),e.get(i.HOST+"/"+i.API_ROOT+"/folders/root").success(function(e){v=new c(new r),v.populateSelf(e),v.getCollectionModel().cacheSettings.pageSize=500,v.expand().then(function(){d(v.contentsCollectionModel.collection),n()})["catch"](function(){a.flashWarnings(o("FileBrowser.Error.Expand",v)),t()})}).error(function(){a.flashWarnings(o("FileBrowser.Error.Root",v)),t()}))})}function g(){t.debug("destroying file browser cache: session ended or project changed"),v.collapse(!0),v=null,C=[],b=!1}var v,C=[],b=!1;Object.defineProperties(this,{items:{get:function(){return C}},expand:{value:p,writable:!1},collapse:{value:m,writable:!1},sort:{value:w,writable:!1},init:{value:h,writable:!1}})}e.$inject=["$http","$q","$translate","$log","APP_SETTINGS","LOADING_OBJECT","PIXFolder","ItemsCollectionModel","NotificationsService","SessionService"],angular.module("PIX.FileBrowser.Service",[]).constant("LOADING_OBJECT",{viewData:{fields:{name:"Loading"}}}).service("FileBrowserService",e)}();