Ver Fonte

Better progress bar calculation

Jakob Borg há 12 anos atrás
pai
commit
271d7eedc4
3 ficheiros alterados com 21 adições e 2 exclusões
  1. 3 0
      gui.go
  2. 5 2
      gui/index.html
  3. 13 0
      model.go

+ 3 - 0
gui.go

@@ -49,6 +49,9 @@ func restGetModel(m *Model, w http.ResponseWriter) {
 	localFiles, localDeleted, localBytes := m.LocalSize()
 	res["localFiles"], res["localDeleted"], res["localBytes"] = localFiles, localDeleted, localBytes
 
+	inSyncFiles, inSyncBytes := m.InSyncSize()
+	res["inSyncFiles"], res["inSyncBytes"] = inSyncFiles, inSyncBytes
+
 	files, total := m.NeedFiles()
 	res["needFiles"], res["needBytes"] = len(files), total
 

+ 5 - 2
gui/index.html

@@ -37,9 +37,12 @@ body {
         <div class="col-md-12">
             <h2>Synchronization</h2>
             <div class="progress">
-                <div class="progress-bar" ng-class="{'progress-bar-success': model.needBytes === 0, 'progress-bar-info': model.needBytes !== 0}" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: {{100 * model.localFiles / (model.localFiles + model.needFiles) | number:2}}%;"></div>
+                <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100"
+                    ng-class="{'progress-bar-success': model.needBytes === 0, 'progress-bar-info': model.needBytes !== 0}"
+                    style="width: {{100 * model.inSyncBytes / model.globalBytes | number:2}}%;">
+                        {{100 * model.inSyncBytes / model.globalBytes | number:0}}%
+                </div>
             </div>
-            <p class="pull-right">{{100 * model.localFiles / (model.localFiles + model.needFiles) | number:2}}%</p>
             <p ng-show="model.needBytes > 0">Need {{model.needFiles | alwaysNumber}} files, {{model.needBytes | binary}}B</p>
         </div>
     </div>

+ 13 - 0
model.go

@@ -132,6 +132,19 @@ func (m *Model) LocalSize() (files, deleted, bytes int) {
 	return
 }
 
+func (m *Model) InSyncSize() (files, bytes int) {
+	m.RLock()
+	defer m.RUnlock()
+
+	for n, f := range m.local {
+		if gf, ok := m.global[n]; ok && f.Modified == gf.Modified {
+			files++
+			bytes += f.Size()
+		}
+	}
+	return
+}
+
 type FileInfo struct {
 	Name string
 	Size int